# CONFIGURACION
################

# Nombre del ejecutable.
target_indexadorlibros = indexador_libros
target_indexadorlibros_test = testindexador_libros

# Extensi�n de los archivos a compilar (c para C, cpp o cc o cxx para C++).
extension = cpp

# CONFIGURACION "AVANZADA"
###########################

# Opciones para el compilador C/C++ en modo ansi.
#CFLAGS = -Wall -ansi -pedantic-errors
CFLAGS = -Wall -ansi -pedantic-errors

# Para valgrind o debug
CFLAGS += -ggdb -DDEBUG

# Opciones para el compilador C++.
#CXXFLAGS = $(CFLAGS) -fno-inline
CXXFLAGS = $(CFLAGS) 

# Opciones del enlazador.
#LDFLAGS


# VARIABLES CALCULADAS A PARTIR DE LA CONFIGURACION
####################################################

# Uso enlazador de c++ si es c�digo no C.
ifeq ($(extension), c)
enlazador = $(CC)
else
enlazador = $(CXX)
endif

# Si no especifica archivos, tomo todos.

fuentes  = $(wildcard ./src/bplusstree/*.cpp) \
			$(wildcard ./src/exceptions/*.cpp) \
			$(wildcard ./src/physical_layer/*.cpp) \
			$(wildcard ./src/logical_layer/*.cpp) \
			$(wildcard ./src/logical_layer/index/*.cpp) \
			$(wildcard ./src/logical_layer/hash/*.cpp) \
			$(wildcard ./src/logical_layer/parser/*.cpp) \
			$(wildcard ./src/logical_layer/entities/*.cpp) \
			$(wildcard ./src/logical_layer/bplustree/*.cpp) \
			$(wildcard ./src/logical_layer/bplustree/exceptions/*.cpp) \
			$(wildcard ./src/logical_layer/bplustree/strategies/*.cpp) \
			$(wildcard ./src/utils/*.cpp) \
			$(wildcard ./src/ui/*.cpp) \
			$(wildcard ./src/ui/comandosusuario/*.cpp) \
			$(wildcard ./test/*.cpp) \
			$(wildcard ./test/bplusstree/*.cpp) \
			$(wildcard ./test/hash/*.cpp) \
			$(wildcard ./test/entities/*.cpp) \
			$(wildcard ./test/testIDGenerador/*.cpp) \
			$(wildcard ./test/index/*.cpp) \
			$(wildcard ./test/parser/*.cpp) \
			$(wildcard ./test/compresor/*.cpp) \
			$(wildcard ./src/compresion/*.cpp) \
			$(wildcard ./src/compresion/lz/*.cpp) \
			$(wildcard ./src/compresion/lz/lz77/*.cpp) \
			$(wildcard ./src/compresion/lz/lz78/*.cpp) \
			$(wildcard ./src/compresion/lz/lzhuff/*.cpp) \
		main.cpp
# REGLAS
#########

.PHONY: all clean

indexadorlibros :$(target_indexadorlibros)
o_indexadorlibros = $(patsubst %.$(extension),%.o,$(fuentes))
$(target_indexadorlibros): $(o_indexadorlibros)
	$(enlazador) $(LDFLAGS) $(o_indexadorlibros) $(LOADLIBES) $(LDLIBS) -o $(target_indexadorlibros)

test :$(target_indexador_libros_test)
o_files_indexadorlibros = $(patsubst %.$(extension),%.o,$(fuentes))
$(target_indexadorlibros_test): $(o_files_indexadorlibros)
	$(enlazador) $(LDFLAGS) $(o_files_indexadorlibros) $(LOADLIBES) $(LDLIBS) -o $(target_indexadorlibros_test)

all: $(indexadorlibros)

test: $(test)

clean:
	#$(RM) -rf $(o_indexadorlibros)
	$(RM) $(OBJS)$(C++_DEPS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) $(target_indexadorlibros) -rf $(o_indexadorlibros)
	
